package site.beanyon.now.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * 日期工具类
 */
public final class DateUtils {
    /**
     * 根据时间戳获取 yyyy-MM-dd 格式的日期字符串
     *
     * @param timestamp 毫秒级时间戳
     * @return 日期字符串
     */
    public static String getDateByTimestamp(Long timestamp) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = buildCalendar(timestamp);
        return sdf.format(calendar.getTime());
    }

    /**
     * 根据时间戳获取 yyyy-MM-dd HH:mm:ss 格式的时间字符串
     *
     * @param timestamp 毫秒级时间戳
     * @return 时间字符串
     */
    public static String getFullTimeByTimestamp(Long timestamp) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar calendar = buildCalendar(timestamp);
        return sdf.format(calendar.getTime());
    }

    /**
     * 根据时间戳构建Calendar对象
     *
     * @param timestamp 毫秒级时间戳
     * @return Calendar对象
     */
    private static Calendar buildCalendar(Long timestamp) {
        Calendar calendar = Calendar.getInstance();

        // 时间戳为0L，返回当前时间
        if (!timestamp.equals(0L)) {
            calendar.setTimeInMillis(timestamp);
        }

        return calendar;
    }
}
